package com.ht.api.controller;

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import com.ht.api.bean.AjaxResult;
import com.ht.api.db.hlink.JsonTreeProcessor;
import com.ht.api.db.hlink.JsonTreeProcessor.JsonTreeNode;
import com.ht.api.open.OpenUtil;
import com.ht.api.util.ParamParser;

import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;

/**
 * 测试接口
 * @author asq
 * @createTime 2025年1月13日 20:49:12
 */
@RestController
@RequestMapping("/api")
public class ApiController {
	/**
	 * 解析api参数
	 * @param paramText 接口参数文本
	 * @param jsonExample 接口参数示例
	 * @return
	 */
	@PostMapping("/parse")
	public AjaxResult parse(@RequestParam(defaultValue = "") String paramText,
			@RequestParam(defaultValue = "") String jsonExample) {
		ParamParser parser = new ParamParser();
		JSONArray params = parser.parseParams(paramText, jsonExample);
		return AjaxResult.success().put("data", params);
	}
	
	/**
	 * 接口debug测试
	 * @param appId 应用ID
	 * @param apiId 接口ID
	 * @param param 参数
	 * @return
	 */
	@PostMapping("/debug")
	public AjaxResult debug(@RequestParam(defaultValue = "")String appId, @RequestParam(defaultValue = "")long apiId,
			JSONObject param) {
		String result = OpenUtil.call(appId, apiId, param);
		return AjaxResult.success().put("data", result);
	}
	
	/**
	 * 解析api的result为treejson
	 * @param jsonResult
	 * @return
	 */
	@PostMapping("/tree")
	public AjaxResult tree(@RequestParam(defaultValue = "")String jsonResult) {
		JsonTreeNode tree = JsonTreeProcessor.parseJsonToTree(jsonResult);
		return AjaxResult.success().put("data", tree);
	}

}
